<?php
/**
 * 控制器基类
 * @author Administrator
 *
 */
class CControllerBase extends CController{
	
	private $_styleBlock = "";
	
	/**
	 * 页面需要使用的样式文件（数组）
	 */
	private $_styleFile = array();

	/**
	 * 页面要使用的js文件
	 */
	private $_jsFile = array();

	/**
	 * 页面要使用的JS代码
	 */
	private $_jsBlock = "";
	
	function __construct($controller, $action){
		parent::__construct($controller, $action);
	}
	
	/**
	 * 设置页面要使用的样式文件
	 * @param array/string $fileArr
	 */
	protected function setStyleFile($fileArr)
	{
		if(is_array($fileArr))
		{
			$this->_styleFile = $fileArr;
		}
		else
		{
			$this->_styleFile[] = $fileArr;
		}
	}

	/**
	 * 设置页面要使用的js文件
	 * @param array/string $jsFile
	 */
	protected function setJsFile($jsFile)
	{
		if(is_array($jsFile))
		{
			$this->_jsFile = $jsFile;
		}
		else
		{
			$this->_jsFile[] = $jsFile;
		}
	}

	/**
	 * 设置页面要使用的css代码
	 * @param string $cssStr
	 */
	protected function setCssBlock($cssStr)
	{
		$this->_styleBlock .= $cssStr;
	}
	
	/**
	 * 设置页面要使用的js代码
	 * @param string $jsStr
	 */
	protected function setJsBlock($jsStr)
	{
		$this->_jsBlock .= $jsStr;
	}
	
	/**
	 * url重定向
	 * @param string $url
	 */
	protected function redirectUrl($url)
	{
		header("location:".$url);
		exit;
	}
	
	/**
	 * 根据数组组合get参数
	 * @param unknown_type $data
	 */
	protected function getUrlParam($data,$encodeKey=array())
	{
		$url = "";
		foreach($data as $key=>$value)
		{
			if(in_array($key, $encodeKey))
			{
				$value = urlencode($value);
			}
			if($url)
			{
				$url.="&";
			}
			$url.= $key."=".$value;
		}
		
		return $url;
	}
	
	public function render($viewFile,$param=array())
	{
		$styleStr = "";
		foreach ($this->_styleFile as $k=>$v)
		{
			$styleStr .= '<link rel="stylesheet" href="'.$v.'" type="text/css" />';
		}

		$jsStr = "";
		foreach ($this->_jsFile as $k=>$v)
		{
			$jsStr .= '<script type="text/javascript" src="'.$v.'"></script>';
		}

		if($this->_jsBlock)
		{
			$this->_jsBlock = '<script type="text/javascript">'.$this->_jsBlock."</script>";
		}
		
		if($this->_styleBlock)
		{
			$this->_styleBlock = "<style>".$this->_styleBlock."</style>";
		}

		$this->setViewParam("styleBlock",$this->_styleBlock);
		$this->setViewParam("styleFile",$styleStr);
		$this->setViewParam("jsFile",$jsStr);
		$this->setViewParam("jsBlock",$this->_jsBlock);

		parent::render($viewFile,$param);
	}
}